package users

import (
	"go_auth/ext/e"
	"go_auth/ext/settings"
	"go_auth/utils/commons"
)

/**
来源信息

如果共享token 所属来源作为sourceId
	不共享token 所属业务+所属来源作为sourceId
*/

type Source struct {
	Id         int64
	SourceId   string `xorm:"varchar(100) 'source_id'"`   //来源id
	SourceName string `xorm:"varchar(100) 'source_name'"` //所属来源
	SourceOp   string `xorm:"varchar(100) 'source_op'"`   //所属业务
	ShareToken int    `xorm:"int(4) 'share_token'"`       //是否共享token  1表示共享,0表示不共享
}

/**
检查sourceId是否存在
*/
func CheckSource(sourceId string) bool {
	exist, err := settings.MasterDB.Exist(&Source{
		SourceId: sourceId,
	})
	if commons.CheckErr(err) {
		return exist
	}
	return false

}

func (s *Source) AddSource() int {
	if CheckSource(s.SourceId) {
		return e.SourceExist
	}
	insert, err := settings.MasterDB.Insert(s)
	if !commons.CheckErr(err) {
		return int(insert)
	}
	return e.Success
}

func (s *Source) UpdateSource() int {
	affected, err := settings.MasterDB.Id(s.Id).Update(s)
	if !commons.CheckErr(err) {
		return int(affected)
	}
	return e.Success
}

func (s *Source) DeleteSource() int {
	affected, err := settings.MasterDB.Id(s.Id).Delete(s)
	if !commons.CheckErr(err) {
		return int(affected)
	}
	return e.Success
}

func FindSources() interface{} {
	source := make([]Source, 0)

	find := settings.MasterDB.Find(&source)
	if !commons.CheckErr(find) {
		return nil
	}
	return source
}
